#!/bin/bash

# 获取 CPU 核心数
get_cpu_cores() {
    echo "CPU 核心数:" $(nproc)
}

# 获取内存总量
get_memory_total() {
    echo "内存总量:" $(free -h | grep Mem | awk '{print $2}')
}

# 获取磁盘总量
get_disk_total() {
      echo "磁盘大小（/）: $(df -h / | awk 'NR==2{print $2, $3, $4, $5}')"
}

# 获取 CPU 型号
get_cpu_model() {
    echo "CPU 型号:" $(lscpu | grep "Model name" | awk -F: '{print $2}' | sed 's/^ *//g')
}

# 检查显卡信息
get_gpu_info() {
    gpu_info=$(lspci | grep -i vga)
    if [ -z "$gpu_info" ]; then
        echo "无显卡"
    else
        echo "显卡信息:" $gpu_info
    fi
}

# 获取操作系统信息
get_os_info() {
    echo "操作系统:" $(cat /etc/os-release | grep "PRETTY_NAME" | cut -d '"' -f 2)
}

# 获取主机名
get_hostname() {
    echo "主机名:" $(hostname)
}

# 获取内网 IP
get_internal_ip() {
    echo "内网 IP:" $(hostname -I | awk '{print $1}')
}

# 获取机器型号
get_machine_model() {
    echo "机器型号:" $(dmidecode -s system-product-name)
}

# 获取系统时间
get_system_time() {
    echo "系统时间:" $(date)
}

# 获取内存占用前 10 的进程
get_top_memory_processes() {
    echo "内存占用前 10 的进程:"
    ps aux --sort=-%mem | awk 'NR<=11{print $0}'
}

# 获取 CPU 占用前 10 的进程
get_top_cpu_processes() {
    echo "CPU 占用前 10 的进程:"
    ps aux --sort=-%cpu | awk 'NR<=11{print $0}'
}

# 获取磁盘 IO 占用前 10 的进程
get_top_disk_io_processes() {
    echo "磁盘 IO 占用前 10 的进程:"
    iotop -b -o -n 1 | head -n 12
}

# 主程序
main() {
    echo "服务器基础信息:"
    get_cpu_cores
    get_memory_total
    get_disk_total
    get_cpu_model
    get_gpu_info
    get_os_info
    get_hostname
    get_internal_ip
    get_machine_model
    get_system_time

    echo ""
    get_top_memory_processes
    echo ""
    get_top_cpu_processes
    echo ""
    get_top_disk_io_processes
    echo ""
    echo "脚本执行完毕"
}

main

